package com.android.common.image.convertor;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;

import com.android.common.image.i.BitmapConvertor;

public class RoundedCornerConvertor implements BitmapConvertor {

	private static BitmapConvertor instance;

	@Override
	public Bitmap convertTo(Bitmap bitmap, Object... params) {
		if (bitmap == null)
			return null;
		Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
				bitmap.getHeight(), Config.ARGB_8888);
		Canvas canvas = new Canvas(output);

		final int color = 0xff424242;
		final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
		final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
		final RectF rectF = new RectF(rect);

		paint.setColor(color);
		canvas.drawRoundRect(rectF, 6, 6, paint);

		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

		canvas.drawBitmap(bitmap, rect, rect, paint);

		return output;
	}

	public static BitmapConvertor getInstance() {
		if (instance == null) {
			instance = new RoundedCornerConvertor();
		}
		return instance;
	}

}
